package com.example.snake;

import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

/**
 * @author Jason
 * @PACKAGE_NAME com.example.snake
 * @Description 绘制窗体 绘制图形
 * @date 2023-12-07 16:04
 */
//继承Frame父类
public class SnackFrame02 extends Frame {
    // 构造器中初始化窗体
    public SnackFrame02() {
        int width = 600;
        int height = 500;
        //设置距离显示器距离
        //        this.setLocation(200,100);
        //获取屏幕尺寸
        Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
        //计算窗口左上角x坐标
        int x = (screenSize.width - width) / 2;
        //计算窗口左上角y坐标
        int y = (screenSize.height - height) / 2;
        //设置窗口位置
        this.setLocation(x, y);
        //设置窗口大小
        this.setSize(width, height);
        //设置背景色
        this.setBackground(Color.magenta);
        this.setTitle("贪吃蛇V1.0");
        //禁止改变窗体大小
        this.setResizable(false);
        //显示窗体
        this.setVisible(true);
        //添加窗口监听
        this.addWindowListener(new WindowAdapter() {
            @Override
            public void windowClosing(WindowEvent e) {
                //退出虚拟机
                System.exit(0);
            }
        });
    }

    /**
     * 绘制窗体内容
     * 窗体显示 | 更新 自动调用
     *
     * @param g 画笔
     */
    @Override
    public void paint(Graphics g) {
        //绘制文本
        g.drawString("你好", 100, 100);
        //绘制线条 起点x,y，终点x,y
        g.drawLine(100, 150, 200, 150);
        //绘制图形矩形 横坐标，纵坐标，宽，高
        g.drawRect(100, 200, 50, 50);
        //绘制图形圆形（矩形的内切圆）横坐标，纵坐标，宽，高
        g.drawOval(100, 200, 50, 50);
        //填充图形 矩形 横坐标，纵坐标，宽，高
        g.fillRect(200, 200, 50, 50);
        //修改画笔颜色
        g.setColor(Color.CYAN);
        //填充图形 圆形 横坐标，纵坐标，宽，高
        g.fillOval(200, 250, 50, 50);
        //绘制图形 三角形 横坐标，纵坐标，宽，高
        g.drawPolygon(new int[]{300, 350, 400}, new int[]{200, 250, 200}, 3);

        //绘制蛇
        g.setColor(Color.CYAN);
        g.fillRect(100, 300, 20 - 1, 20 - 1);
        g.fillRect(120, 300, 20 - 1, 20 - 1);
        g.setColor(Color.ORANGE);
        g.fillOval(140, 300, 20 - 1, 20 - 1);
    }

//    public static void main(String[] args) {
//        new SnackFrame02();
//    }
}
